package main

import (
	"fmt"
	"gitee.com/virtual-moon/vload"
)

// Order 订单信息
type Order struct {
	ID         int64
	CreateBy   int64  // 创建人ID
	CreateName string // 创建人名称
	UpdateBy   int64  // 修改人ID
	UpdateName string // 修改人名称
}

func main() {
	// 模拟数据
	orders := []Order{
		{ID: 1, CreateBy: 1001, UpdateBy: 1002},
		{ID: 2, CreateBy: 1002, UpdateBy: 1003},
		{ID: 3, CreateBy: 1003, UpdateBy: 1001},
	}

	// 模拟用户数据
	userMap := map[int64]string{
		1001: "张三",
		1002: "李四",
		1003: "王五",
	}

	// 获取用户名的函数
	getUserNames := func(ids []int64) (map[int64]string, error) {
		result := make(map[int64]string)
		for _, id := range ids {
			if name, ok := userMap[id]; ok {
				result[id] = name
			}
		}
		return result, nil
	}

	// 使用快速模式加载创建人名称
	err := vload.LoadQuick(&orders, "CreateBy", "CreateName", getUserNames)
	if err != nil {
		fmt.Printf("加载创建人名称失败: %v\n", err)
		return
	}

	// 使用快速模式加载修改人名称
	err = vload.LoadQuick(&orders, "UpdateBy", "UpdateName", getUserNames)
	if err != nil {
		fmt.Printf("加载修改人名称失败: %v\n", err)
		return
	}

	// 打印结果
	for _, order := range orders {
		fmt.Printf("订单ID: %d, 创建人: %s, 修改人: %s\n",
			order.ID, order.CreateName, order.UpdateName)
	}
}
